To improve the interface between a user and a machine, incorporating haptic effects into the interface along with audio and/or video media has become more and more prevalent in recent years. Haptic effects such as vibrations can be felt by a user and may typically be related to an event trigger, such as the depressing of a key on a device or the playing of ring tones to announce an incoming call or the receipt of a text message on a cellphone, and the like. Generally, media playback can be complemented with vibrations. However, conventional methods of implementing haptic effects have some problems when playing a haptic signal along with a media signal over a period of time.
One such problem is the need to synchronize playback between haptic signals and other media signals such as video and/or audio signals. Typically, the audio engine, video engine and the haptic engine operate on different clocks. There is usually no built-in synchronization mechanism during playback of haptic, video, and audio signals. Although, for example, at the beginning of a playback, the haptic signal and the media signal may start within a few milliseconds of one another and as such are adequately synchronized, these signals can usually drift out of sync in a fairly short period of time.
Another such problem is that it can be difficult to randomly access a point in a media transport stream having both media and haptic signals. In other words, it is difficult to synchronize the haptic signals with media signals when a user begins the playback of a portion of the media transport stream at a random point without access to any data that may occur before this point in the media transport stream.
As such, what is needed is a solution that synchronizes haptic effects with other media (e.g., audio and/or video), which can operate at or from any point in a media transport stream containing both haptic and media information.